home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / telecomm / fnordadl / fn132src.zoo / ref-man / network.tex < prev    next >
Encoding:
Text File  |  1991-09-02  |  80.2 KB  |  1,956 lines

  1. @comment Tell Emacs to use -*-texinfo-*- mode
  2. @comment $Id: network.tex,v 2.6 91/09/02 01:37:53 adrian Exp $
  3.  
  4. @node Networking, Doors, Events, Top
  5. @chapter Networking
  6. @cindex Networking
  7.  
  8. Fnordadel has the ability to
  9. @cindex Network
  10. @dfn{network}, that is, to share mail,
  11. rooms and files, with other Fnordadels and other Citadels supporting
  12. the ``C86Net'' style of networking.  Since Fnordadel is a descendant
  13. of Citadel-86, it retains compatibility with Citadel-86 networking
  14. (well, mostly---@pxref{Networking with Citadel-86}).
  15. Other Citadel variants supporting C86Net
  16. include STadel (Fnordadel's immediate ancestor), Citadel-68K for the
  17. Amiga, Fortress, and some others.
  18.  
  19. When two Citadels network, they follow a standard procedure.
  20. First, one must call the other.  Fnordadel can be induced to make net
  21. calls by means of
  22. @vindex event
  23. @code{#event}s and
  24. @vindex polling
  25. @code{#polling}; read
  26. further in this chapter for
  27. more on these.  Fnordadel can also receive net calls from any system at
  28. any time (assuming there's no user logged in, of course.)  When two
  29. Citadels have connected for the purposes of networking, they first must
  30. stabilize the call, the caller (which starts out as the
  31. @dfn{master}) must
  32. @cindex Master (network mode)
  33. identify itself, and passwords, if you use them, must be exchanged.  Then the
  34. caller makes a series of requests; these can be for room sharing, file
  35. sending or requesting, mail delivery, or whatever.  After the caller has made
  36. all of its requests,
  37. @cindex Role reversal
  38. @dfn{role reversal} is performed; this essentially makes
  39. the caller and the callee switch roles in mid-call, leaving the callee as
  40. the master and the caller as the
  41. @cindex Slave (network mode)
  42. @dfn{slave}.  The callee now issues any
  43. requests that it has to make in the same manner as the caller did.  When
  44. the callee is finished, the two systems hang up.
  45.  
  46. Simple, huh?  Well, as it happens, this simple system has proven
  47. quite flexible and useful; networking has become a fairly large part of
  48. Citadel activity.  So it's only natural that it's had a large amount of
  49. programming effort devoted to it, and thus, a lot of stuff we've got to
  50. tell you about it. So hang on to your hat, and off we go!
  51.  
  52. @node Networking Configuration, The Net Menu, Networking, Networking
  53. @section Networking Configuration
  54. @cindex Networking configuration
  55. @cindex Configuration, networking
  56.  
  57. There is a whole whack of things that either need to be set or
  58. can be set in @file{ctdlcnfg.sys} to control Fnordadel's networking ability.
  59. We divide these into two groups: required parameters and optional ones.
  60. Please note that there is no way to ``turn off'' Fnordadel's networking
  61. ability.  You may choose not to explicitly network with any systems, but
  62. other Citadels will still be able to call yours and send you mail, at
  63. the very least.
  64.  
  65. @node Required parameters, Optional parameters, Networking Configuration, Networking Configuration
  66. @subsection Required parameters
  67.  
  68. These parameters @emph{must} be defined properly in @file{ctdlcnfg.sys}
  69. for proper networking to occur; indeed, Fnordadel will stubbornly refuse to
  70. come up at all unless certain ones are defined.  So define all
  71. these.
  72.  
  73. @table @code
  74. @item #nodename
  75. @vindex nodename
  76. @cindex Network node name
  77. @cindex Node name
  78. This is a string of 19 characters or less.  It
  79. defines the name by which your system will be known on
  80. the network.  The allowable characters in this string are:
  81. @itemize @bullet
  82. @item
  83. Upper and lower case letters
  84. @item
  85. Digits
  86. @item
  87. Space characters (@samp{ })
  88. @item
  89. Any of @samp{* _ - .}
  90. @end itemize
  91. @noindent
  92. Spaces are equivalent to @samp{_} (underscore) characters; therefore
  93. @samp{The_Rock} and @samp{The Rock} amount to the same thing.  (We
  94. encourage the use of @samp{_} rather than @samp{ }; aside from our entirely
  95. subjective opinion that it looks better, it also helps when interfacing
  96. with other networks that might not support spaces in nodenames.)
  97. We'd also like
  98. to recommend against using @samp{.} in your
  99. @vindex nodename
  100. @code{#nodename}; it may
  101. cause confusion with domains in later versions of the
  102. software.
  103.  
  104. We'd like it if
  105. @vindex nodename
  106. @code{#nodename}s were kept to nine
  107. characters or less; indeed, @code{configur} will preach at
  108. you a bit if you define a
  109. @vindex nodename
  110. @code{#nodename} with more than nine
  111. characters.  This is mainly because of mail routing
  112. considerations (@pxref{Mail Routing}); explicitly addressing
  113. mail to systems with long weird nodenames is a pain, and
  114. prone to error.  We'd prefer that you used a short
  115. @vindex nodename
  116. @code{#nodename} together with a descriptive
  117. @vindex organization
  118. @code{#organization}
  119. (@pxref{Optional parameters}.)
  120.  
  121. @item #nodeid
  122. @vindex nodeid
  123. @cindex Network node ID
  124. @cindex Node ID
  125. This string, limited to 19 characters, defines the
  126. unique ID by which your node will be known.  It is used
  127. by the internals of the networking software, so it will
  128. never be shown directly to users.
  129.  
  130. What can this unique string consist of, you ask?
  131. Why, it's no more than your telephone number.  It must follow
  132. a strict format:
  133. @example
  134. <@var{country code}> <@var{area code}> <@var{phone number}>
  135. @end example
  136. Country codes are listed in @ref{Country Codes}.  (Canada
  137. is @samp{CA}, and the United States is @samp{US}.)  The area code and
  138. phone number are what you'd expect.  Punctuation (dashes,
  139. parentheses and so on) are allowed; they're stripped when
  140. the string is actually used for anything.  As an example,
  141. the following is @code{secret}'s
  142. @vindex nodeid
  143. @code{#nodeid}:
  144. @example
  145. #nodeid "CA (403) 425-1779"
  146. @end example
  147.  
  148. @item #define sharedrooms
  149. @vindex sharedrooms
  150. @cindex Room sharing limit
  151. This variable defines the maximum number of rooms
  152. which may be shared with any one system on your net-list.
  153. The limit has historically been 16; this value should be
  154. perfectly adequate for most systems.  If you're sharing a
  155. lot of rooms (say, you're a major hub system), you'll want
  156. to put this higher.  Each shared room slot occupies 10
  157. bytes for each node in your net-list.
  158.  
  159. Once you've
  160. configured your system for the first time,
  161. @code{sharedrooms} can only be changed
  162. @pindex nchange
  163. by running @code{nchange}; see @file{nchange.man} for more.  Do @emph{not}
  164. simply change the value in @file{ctdlcnfg.sys} and run @code{configur};
  165. @pindex configur
  166. things will either come to a screeching halt (if you're
  167. lucky), or blow up violently (if you're not).
  168.  
  169. @item #netdir
  170. @vindex netdir
  171. @cindex Network files directory
  172. This is the directory in which Fnordadel will
  173. put all the files needed in networking; these files will
  174. include @file{ctdlnet.sys} (your net-list), @file{ctdlloop.zap} (the
  175. loop-zapper database; @pxref{The loop-zapper}), and many
  176. files of a temporary nature.  Make sure this directory is
  177. on a device with some amount of free space (i.e., don't try
  178. to cram it on a floppy which has 3k free) because the
  179. temporary files written here can sometimes be fairly large
  180. if you do a lot of networking.
  181.  
  182. Note that
  183. @vindex spooldir
  184. @code{#spooldir} is a synonym for
  185. @vindex netdir
  186. @code{#netdir}.
  187. @end table
  188.  
  189. @node Optional parameters, Setting up for networking, Required parameters, Networking Configuration
  190. @subsection Optional parameters
  191.  
  192. Many of these parameters are of the ``nice to have, but
  193. not absolutely necessary'' variety.  Fnordadel will try to use
  194. reasonable defaults where applicable.
  195.  
  196. @table @code
  197. @item #organization
  198. @vindex organization
  199. @cindex Network organization name
  200. @cindex Organization name
  201. To make up for short
  202. @vindex nodename
  203. @code{#nodename}s (@pxref{Required parameters}),
  204. you may define a string of up to 39
  205. characters which will be used to provide a slightly better
  206. description of your system in networked messages.  It is
  207. displayed at the end of message headers in shared rooms.
  208. For example, let's say we're running a @sc{bbs} called
  209. ``The Round Table''.  Now, this is longer than 9 characters,
  210. so we don't want to use it as-is for a
  211. @vindex nodename
  212. @code{#nodename}.  So, we define
  213. @vindex nodename
  214. @code{#nodename} as @samp{RT}, which is easy to remember and type, and
  215. use an
  216. @vindex organization
  217. @code{#organization} like this:
  218. @example
  219. #organization "The Round Table, Edmonton"
  220. @end example
  221. The headers on messages from our board will appear
  222. like this:
  223. @example
  224. 90Jul20 8:24 pm from Biff @@ RT (The Round Table, Edmonton)
  225. @end example
  226. @vindex organization
  227. The @code{#organization} field can say anything, really;
  228. some people like to put witty little sayings in there or
  229. whatever.  Just keep it clean.
  230.  
  231. @item #domain
  232. @vindex domain
  233. @cindex Domains
  234. @cindex Network domains
  235. The @code{#domain} field tells the system what Citadel-86-style domain
  236. your system belongs to.  A domain is a group of network systems, usually
  237. organized by geographical region, but the grouping could be based on
  238. anything at all.  If you don't know what domain you're a part of, leave
  239. this field commented out or define it to be the empty string (i.e.
  240. @code{#domain ""}).  You can set the field later.
  241.  
  242. This field is
  243. primarily for Citadel-86 compatibility, which uses state or province
  244. abbreviations as domains.  Ask around your area to see if a domain exists,
  245. and join it if so.  If not, start your own, or join a domain from another
  246. region.  Please don't put a junk value in this field; leave it blank
  247. unless you're joining or starting a real domain.  @xref{Domains}.
  248.  
  249. If you define a domain, it will appear in the headers of messages
  250. originating on your system.  The domains of other systems will appear
  251. in message headers from those systems.
  252. Continuing the example from above, with system RT, if we define
  253. @vindex domain
  254. @code{#domain} as @samp{Alta}, message headers will look like this:
  255. @example
  256. 90Jul20 8:24 pm from Biff @@ RT.Alta (The Round Table, Edmonton)
  257. @end example
  258.  
  259. @vindex receiptk
  260. @cindex Network file receipt limit
  261. @vindex receiptdir
  262. @cindex Network file receipt directory
  263. @item #define receiptk
  264. @itemx #receiptdir
  265. Since Fnordadel can accept files sent from other
  266. systems on the network, we have to tell it how much we're
  267. willing to accept, and where to put these files.
  268.  
  269. The variable @code{receiptk} should be defined as the
  270. number of kilobytes which will be allowed to accumulate in
  271. your receipt directory before Fnordadel will refuse to
  272. accept any more files over the network.  Notice that this
  273. really doesn't have anything to do with the amount of free
  274. space available on your storage device, though obviously
  275. if you run out of space, files will not be received.  What
  276. actually happens is that prior to the receipt of a file,
  277. Fnordadel will add up the sizes of the files currently
  278. in your receipt directory and compare the number with
  279. your defined @code{receiptk}; if the addition of the new file
  280. would cause the total amount of used space to
  281. exceed @code{receiptk}, then the file will be refused.
  282. The upshot: clean out your receipt directory after you
  283. receive files from other systems.
  284.  
  285. @vindex receiptk
  286. @code{#receiptk} defaults to @samp{100}.
  287.  
  288. @vindex receiptdir
  289. @code{#receiptdir} is, as you'd expect, the name of the
  290. directory in which to put received files.  If you do not
  291. define it, it defaults to
  292. @vindex netdir
  293. @code{#netdir}.
  294.  
  295. @item #define allnet
  296. @vindex allnet
  297. @cindex Network privileges
  298. This simple binary switch tells Fnordadel whether
  299. you want to give out net privs to all new users.  If set
  300. to @samp{1}, all users will be given net privs when their account
  301. is created; when set to @samp{0}, the Sysop must explicitly grant
  302. net privileges individually (@pxref{User Status Commands}).
  303. See @code{[N]et-save} in @ref{The Message Editor}, and
  304. @code{.E(nter) N(et-message)} in @ref{Multi-key message entry commands}, for
  305. a description of what the possession of net privs allows a user to do and how.
  306. See also @file{flipbits.man} for a description of a utility to set the
  307. @pindex flipbits
  308. net privilege flag for all users en masse.
  309.  
  310. @vindex netlog
  311. @cindex Network activity log
  312. @vindex netdebug
  313. @cindex Network debugging
  314. @item #define netlog
  315. @itemx #define netdebug
  316. These two binary switches set Fnordadel defaults
  317. for network logging and debugging.  If set to @samp{1}, then the
  318. logging/debugging is automatically turned on when you run
  319. Fnordadel.  @xref{Logging and Debugging}.
  320.  
  321. @item #define zaploops
  322. @vindex zaploops
  323. @cindex Loop zapping
  324. This binary switch tells Fnordadel to enable or
  325. disable the loop-zapper.  The loop-zapper is used to
  326. control
  327. @cindex Vortex
  328. @dfn{vortexes} in networked rooms; that is, the
  329. phenomenon whereby erroneous backbone connections
  330. somewhere along the network result in duplicate messages
  331. being sent to your system.  @xref{The loop-zapper}.
  332. Suffice it to say that
  333. setting @code{zaploops} to @samp{1} will enable it; to @samp{0} will disable
  334. it.
  335.  
  336. @pindex +zap (citadel)
  337. The @code{citadel} command line switch @samp{+zap} is
  338. another way to enable the loop-zapper.
  339.  
  340. @item #define purgenet
  341. @vindex purgenet
  342. @cindex Purge messages (network)
  343. This binary switch, if set to @samp{1}, tells Fnordadel to use its
  344. message purge feature on incoming network traffic, as well
  345. as locally-entered messages.  For more information on the
  346. purge feature, @pxref{Message purging}.  In a nutshell, the feature
  347. lets Fnordadel automatically delete messages from undesireable
  348. users or entire net nodes, which you specify.  Use with caution.
  349.  
  350. @item #define keepdiscards
  351. @vindex keepdiscards
  352. @cindex Discarded messages
  353. @cindex Loop zapping
  354. @cindex Purge messages (network)
  355. This binary switch controls Fnordadel's treatment
  356. of incoming net messages that are discarded, either by the
  357. loop-zapper (@pxref{The loop-zapper}) or the message purger (see
  358. above).  If set to @samp{1}, the flag instructs Fnordadel to keep
  359. discarded messages in the
  360. @vindex netdir
  361. @code{#netdir}, for you to look at later.
  362. At that time you may do such things as delete them or integrate
  363. them into the message base.  @xref{The Net Menu}, for more
  364. details on the commands to handle discarded messages.
  365.  
  366. If the flag is set to @samp{0}, messages discarded by the
  367. loop-zapper or message-purger are lost forever.
  368.  
  369. @item #define forward-mail
  370. @vindex forward-mail
  371. @cindex Mail forwarding
  372. @cindex Network mail forwarding
  373. Another switch.  If set to @samp{1}, it tells Fnordadel
  374. to allow mail to be forwarded through your system to
  375. others.  If, for some reason, you want to disallow mail
  376. forwarding, set @code{forward-mail} to @samp{0}.  @xref{Mail Routing}.
  377.  
  378. @item #define anonnetmail
  379. @vindex anonnetmail
  380. @cindex Network mail
  381. This binary switch, if set to @samp{1}, allows your system to
  382. receive net-mail from systems that are unknown to it.  This is
  383. the default behavior of the system.  If you have unwanted
  384. volumes of mail being dumped on you by mystery nodes, you can
  385. set this parameter to @samp{0} and Fnordadel will reject netmail from unknown
  386. systems thereafter.
  387.  
  388. @item #define anonfilexfer
  389. @vindex anonfilexfer
  390. @cindex Network file transfers
  391. This binary switch is like the one above, but controls
  392. file transfers with anonymous nodes.  If the flag is set to
  393. @samp{1}, file transfers to and from unknown nodes are permitted.  If
  394. set to @samp{0}, they are prevented.
  395.  
  396. @item #define pathalias
  397. @vindex pathalias
  398. @cindex Path aliases
  399. Here's yet another binary switch; when @samp{1}, it
  400. enables Fnordadel's path aliasing capability.  @xref{Mail Routing}.
  401.  
  402. @item #hub
  403. @vindex hub
  404. @cindex Network hub
  405. @cindex Mail forwarding
  406. @cindex Network mail forwarding
  407. This is a string variable which should be set
  408. to the nodename of the system to which undeliverable
  409. mail is to be forwarded (which system, hopefully, will
  410. be better equipped to deal with it than yours is.)
  411. @xref{Hubbing}, for more information on
  412. @vindex hub
  413. @code{#hub}.
  414.  
  415. @vindex ld-cost
  416. @cindex Mail cost
  417. @cindex Network mail cost
  418. @vindex hub-cost
  419. @cindex Mail cost
  420. @cindex Network mail cost
  421. @item #define ld-cost
  422. @itemx #define hub-cost
  423. These integer variables define the cost, measured in ld-credits, of using the
  424. Fnordadel long-distance mail routing and hub forwarding facilities,
  425. respectively.  Ld-credits are given to users by the Sysop (see
  426. @ref{User Status Commands}, for how to do so), and control who can send mail
  427. that costs you money.
  428. @end table
  429.  
  430. @node Setting up for networking, Related parameters, Optional parameters, Networking Configuration
  431. @subsection Setting up for networking
  432.  
  433. Networking proceeds in one of two ways: your system can call another one, or
  434. other systems can call yours.  Usually you'll do both, for local network
  435. connections; for long-distance ones, you'll want to make specific arrangements.
  436. There are two mechanisms for achieving networking: events, and polling.
  437.  
  438. @node Network events, Polling, Setting up for networking, Setting up for networking
  439. @subsubsection Network events
  440. @cindex Network event
  441.  
  442. If you don't know about events yet, go read
  443. @ref{Events}.  As they relate to networking, events allow
  444. you to schedule network sessions, during which your @sc{bbs}
  445. will presumably call other systems (or be called by
  446. other systems) for the sole purpose of networking.
  447.  
  448. The format of the event definition is laid
  449. out in @ref{Events in General}; here we present an example only, with
  450. a couple of points of note:
  451. @vindex event
  452. @example
  453. #event NETWORK all 3:01 39 ld-net 1
  454. @end example
  455. The above line will set up a network event which
  456. goes off at 3:01 in the morning, lasting for 39 minutes;
  457. it will be named @samp{ld-net}; and it will apply to network
  458. #1.  This means that your system will call only those nodes
  459. that are part of net #1 during this session, though calls
  460. @emph{from} all systems will be accepted.
  461.  
  462. During a network event, the @sc{bbs} is closed to the
  463. users.  If a user connects, he will, after a delay, be
  464. shown a message to the effect of ``The system will be in
  465. net mode for @var{xx} minutes longer; call back later.'' If a
  466. user is logged in before an event is scheduled to go off,
  467. he will be warned five minutes beforehand that he'd better
  468. terminate quickly.  When the event arrives, he will be
  469. booted unceremoniously.
  470.  
  471. Upon commencing a net event, Fnordadel will call
  472. all systems in the specified net for which there is
  473. outgoing material.  In addition, you can configure things
  474. so that certain nodes will be called whether there is work
  475. or not; this is known as ``polling''.  (Note that this is
  476. different from
  477. @vindex polling
  478. @code{#polling}, detailed in @ref{Polling},
  479. below; we really must change the terminology@dots{})  See the @code{[F]}
  480. command in @ref{Editing Nodes}.
  481.  
  482. Note that the event will always last the specified
  483. number of minutes, whether the @sc{bbs} has finished calling
  484. systems or not.  Indeed, you may want to set up a net
  485. session for the sole purpose of reserving a time slot for
  486. other systems to call yours.  (As we've mentioned before,
  487. Fnordadel can receive network calls at any time, whether
  488. it's in a network event or not.  But setting up an event
  489. ensures that no user will be logged in.)
  490.  
  491. @node Polling, Summary of network events and polling, Network events, Setting up for networking
  492. @subsubsection Polling
  493. @cindex Network polling
  494. @cindex Polling, network
  495.  
  496. @dfn{Polling}, in this context, refers to the ability
  497. of Fnordadel to dynamically enter network mode whenever
  498. there is outgoing work and the @sc{bbs} has been idle for a set
  499. length of time.  This allows greater flexibility than does
  500. the network event mechanism.
  501.  
  502. Essentially, we must tell Fnordadel the time
  503. periods during which we want polling to be active; we must
  504. also tell it the required length of idle time before
  505. systems will be polled.  The syntax of the
  506. @vindex polling
  507. @code{#polling}
  508. definition is as follows:
  509. @cindex Polling declaration
  510. @example
  511. #polling <@var{net}> <@var{start-time}> <@var{end-time}> [@var{days}]
  512. @end example
  513. @noindent
  514. The fields mean:
  515. @table @var
  516. @item net
  517. The net number to poll (usually 0).
  518. @item start-time
  519. The time (in 24-hour format) to start polling.
  520. @item end-time
  521. The time to end polling.
  522. @item days
  523. An optional field which is either
  524. @samp{all}, or a comma-separated list of days, as in
  525. @samp{Mon,Wed,Fri}.
  526. @end table
  527. Most systems that engage in any local networking
  528. put a fairly standard
  529. @vindex polling
  530. @code{#polling} line in:
  531. @example
  532. #polling 0 0:00 23:59 all
  533. @end example
  534. This causes the @sc{bbs} to poll network number 0 all
  535. day long.
  536.  
  537. You can also define more than one
  538. @vindex polling
  539. @code{#polling}
  540. duration; for example,
  541. @example
  542. #polling 1 4:00 20:00 all
  543. #polling 2 20:01 3:00 all
  544. @end example
  545. @noindent
  546. will cause net #1 to be polled from 4AM to 8PM, and net
  547. #2 to be polled from 8:01PM to 3AM.
  548.  
  549. If you've got any
  550. @vindex polling
  551. @code{#polling} defined, you'll also
  552. want to define the variable @code{poll-delay}.  This is the
  553. length of time, measured in minutes, for which the @sc{bbs}
  554. must be idle before Fnordadel will start polling.  A
  555. decent value (or, at least, what we use) is around 15
  556. minutes.
  557.  
  558. @node Summary of network events and polling,  , Polling, Setting up for networking
  559. @subsubsection Summary of network events and polling
  560.  
  561. Most systems that engage in only local networking
  562. find that
  563. @vindex polling
  564. @code{#polling} is perfectly adequate for
  565. decent propagation times; setting up network events
  566. is usually unnecessary.  Of course, if you've got users
  567. calling within 30 seconds after the previous one hangs
  568. up, you won't get much polling done; but we've never
  569. seen a system that doesn't have idle time scattered
  570. throughout the day.
  571.  
  572. If you do any long-distance networking, you'll
  573. probably want to use a mixture of network events for
  574. the long-distance stuff and polling for the local stuff.
  575. It would be distinctly unwise to set up polling
  576. for nets containing long-distance systems; you don't
  577. want your board calling cross-country every time someone
  578. enters a message in the applicable shared rooms, do you?
  579. Instead, set up an event during the wee hours of the
  580. morning, and get all the long-distance networking done
  581. then.  You might want to coordinate things with your
  582. long-distance connection; if both of you jump into a
  583. network event at the same time, things will go quicker.
  584.  
  585. @node Special net keys
  586. @subsubsection Special keys in network events
  587. @cindex Special net keys
  588. @cindex Commands during network events
  589.  
  590. There are a couple of special keys that you can hit while Fnordadel is in a
  591. network event to make it do things.  You can use these only when Fnordadel
  592. isn't in the middle of an actual net call.
  593.  
  594. @table @samp
  595. @cindex Background process, Fnordadel as a
  596. @findex ^Z (send Fnordadel to background)
  597. @item ^Z
  598. @dfn{Take Fnordadel to the background}.  If you run Fnordadel under some sort
  599. of multitasker, hitting @samp{^Z} while in a network event causes the same
  600. thing as when you hit it any other time---it causes Fnordadel to drop into
  601. the background.  @xref{Multitasking and Fnordadel}.
  602.  
  603. @cindex Quit Fnordadel in net mode
  604. @findex Q (quit Fnordadel in net mode)
  605. @item Q
  606. @dfn{Quit Fnordadel}.  Hitting @samp{Q} while in a net event causes Fnordadel
  607. to exit completely, after confirmation.  This is a good way to stop the
  608. system from calling those long-distance systems 100 times during the day.
  609. @end table
  610.  
  611. @node Related parameters,  , Setting up for networking, Networking Configuration
  612. @subsection Related parameters
  613.  
  614. There are a few other parameters that aren't strictly
  615. networking parameters, but which will cause you networking grief
  616. if they aren't defined properly.  They have to do with your
  617. modem; @pxref{Modem Stuff}, for detailed descriptions.  Ones to watch:
  618. @example
  619. #define usa
  620. @vindex usa
  621. #define local-time
  622. @vindex local-time
  623. #define ld-time
  624. @vindex ld-time
  625. @end example
  626.  
  627. @node The Net Menu, Editing Nodes, Networking Configuration, Networking
  628. @section The Net Menu
  629. @cindex Network menu
  630. @cindex Commands, networking configuration
  631.  
  632. The Net menu hides under the Sysop menu, which is reachable by
  633. hitting @samp{^L} at a room prompt.  (@xref{Sysop Special Functions},
  634. for more on Sysop commands.)
  635. If you hit @samp{N} at the @samp{sysop cmd:} prompt, you'll be in the Net menu, from
  636. which you can choose one of the following commands:
  637. @cindex Network menu
  638. @example
  639. [A]dd node
  640. [D]iscarded messages
  641. [E]dit node
  642. [F]orce poll to node
  643. [P]oll network
  644. [R]equest file
  645. [S]end file
  646. [V]iew net list
  647. e[X]it to sysop functions
  648. @end example
  649.  
  650. @table @code
  651. @item [A]dd node
  652. This command allows you to add new nodes to your net-list;
  653. you must add a node to your net-list before you can send @emph{anything} to it.
  654.  
  655. You will first be asked for the node's name; type its
  656. nodename (the hopefully short name by which the other node is
  657. known.)  If the system is a Citadel-86, it probably has a long
  658. and twisted name, so make sure you've got it spelled
  659. correctly, or things like mail routing, auto-reply to incoming net-mail,
  660. and other stuff won't work quite right.  Names will never exceed 19
  661. characters, in any case.  Then, it'll ask you for the node ID of
  662. the new system.  This is the node's phone number; it is, obviously,
  663. vitally important to get this right.  It should be in the same format
  664. as your own
  665. @vindex nodeid
  666. @code{#nodeid} (@pxref{Required parameters}).
  667.  
  668. Next, you'll be queried about the baud rate supported by
  669. the new node; enter the standard baud rate code (@samp{0} is 300, @samp{1} is
  670. 1200, @samp{2} is 2400, @samp{3} is 9600 and @samp{4} is 19200).  Use
  671. the highest baud rate
  672. supported by the other node, even if it is higher than the highest
  673. baud rate that yours supports.  Fnordadel is smart enough to pick
  674. the lower of the two when it dials out; and this way you don't have
  675. to edit your net-list if you happen to acquire a faster modem.  
  676.  
  677. Lastly, Fnordadel will ask you whether the system is
  678. a long-distance node or not.  Make sure you tell the truth here;
  679. this setting affects a number of things, including the method by
  680. which dialout is done.  (@xref{Long-distance dialing}.)
  681.  
  682. The rest of the settings for the new node will default to
  683. (hopefully) reasonable values.  In some cases you'll have to
  684. immediately edit the node to set other things like net passwords,
  685. Citadel-86 status, and so on.
  686.  
  687. @item [D]iscarded messages
  688. @cindex Discarded messages
  689. This command gets you into a small sub-section where you can
  690. view and deal with incoming net messages that were zapped or purged
  691. by your system, if you configured things to save such messages.
  692. (@xref{Optional parameters}, for the way to configure this;
  693. @pxref{The loop-zapper}, for details on the loop-zapper;
  694. and @pxref{Optional parameters}, and @ref{Message purging}, for details on
  695. the message purge feature.)  After
  696. hitting @samp{D}, the system will either tell you there are no discarded
  697. messages, or it will tell you the number of
  698. discarded messages, show you the first one, and then give you the
  699. following prompt:
  700. @example
  701. [A]gain, [D]elete, [I]ntegrate, [N]ext, [S]top:
  702. @end example
  703. @table @code
  704. @item [A]gain
  705. Redisplay the current message and prompt again.
  706. @item [D]elete
  707. Delete the current discarded message, if you confirm your desire to
  708. do so, and advance to the next discarded message, if there is one.
  709. @item [I]ntegrate
  710. This is the interesting command.  If you confirm the
  711. action, this tells Fnordadel to integrate the current discarded
  712. message into your message base as though it had never been
  713. zapped or purged.  It will be passed along to any backbone
  714. systems sharing the room, just as it normally would have been.
  715.  
  716. You might run into difficulty if the message was in a
  717. room that no longer exists on your system, or whose name has
  718. been changed.  The same is true if the message came from an
  719. STadel or derivative, and the room is aliased there to something
  720. other than the name in use on your system, or if the room is
  721. aliased to a different name on your own system (@pxref{Shared room aliasing}).
  722. In any of these cases, Fnordadel won't know where to put the
  723. message now, so it will ask you if placing the message in the
  724. @code{Aide>} room is okay.  Once it's there, you can move it.  If you
  725. don't okay the placement in @code{Aide>}, nothing is done.
  726.  
  727. If the message is successfully integrated into a room,
  728. you will be asked if the discard message file should be deleted,
  729. and then shown the next discarded message, if there is one.
  730. If the message is not integrated, you will be returned to the
  731. discard prompt.
  732. @item [N]ext
  733. Take you to the next discarded message, if there is one.
  734. @item [S]top
  735. Stop the discard message processing and return you to the net commands menu.
  736. @end table
  737.  
  738. @item [E]dit node
  739. This command takes you to the net node edit sub-menu.
  740. @xref{Editing Nodes}, for an in-depth look.
  741.  
  742. @item [F]orce-poll node
  743. This is a quickie command for forcing Fnordadel to make
  744. a single net call to another system.  Supply a system name, and
  745. Fnordadel will call the system regardless of traffic pending,
  746. receive-only status, l-d status or anything else.
  747.  
  748. @item [P]oll network
  749. This command allows you to force a one-time poll of the
  750. specified network.  If anyone is logged in at the time, they will
  751. be immediately terminated (with extreme prejudice, we might
  752. add) and Fnordadel will call all nodes in the specified net
  753. for which there is work.
  754.  
  755. @item [R]equest file
  756. Use this command when you wish to get some files from some
  757. system with which you network directly.  You'll be asked for the
  758. system from which to request files, the room on the other system
  759. from which to get them, the filename(s) to get, and the directory
  760. on your system in which to place the received files.  The room on
  761. the other system must be ``network readable'' (@pxref{How to share a room})
  762. for the request to work.  You may use wildcards (@samp{*} and @samp{?}) in the
  763. filename specification.
  764.  
  765. The file request will be spooled for later; the next time
  766. your system connects with the other one, the request will be made
  767. and, if the other system can oblige, the files will be transferred.
  768.  
  769. Note that it is possible to request files from a system
  770. with which you have not previously networked.  Simply add the node
  771. to your net-list in the standard manner, and @samp{[R]equest} the file as
  772. usual---the other node doesn't have to know about yours.  (We use
  773. this in the distribution of Fnordadel; any other node can call
  774. us and request new versions, assuming they know the name of the
  775. room and the filenames.  @xref{Fnordadel Support}.)
  776.  
  777. @item [S]end file
  778. This command allows you to send a file or files to a node
  779. with which you network directly.  You'll be asked for the target
  780. node name and the name(s) of the file(s) to transfer; you should
  781. provide the full path-spec, and wildcards (@samp{*} and @samp{?}) are permitted.
  782. The sendfile will be spooled for later; the next time your system
  783. connects with the other one, the sendfile will be made, subject
  784. to space availability on the other system.  If there wasn't enough
  785. space, the other node will say so and you'll get a message in
  786. @code{Aide>} to this effect.  You will have to re-enter the send command
  787. once the remote system has corrected its space problems.
  788.  
  789. @item [V]iew net list
  790. This prints out a nicely formatted list of all the nodes
  791. in your net-list.  The format is as follows:
  792.  
  793. @example
  794. @group
  795. * sysname              CA 403 432 1098      CRMF  2400 0,1
  796. ^       ^               ^                    ^      ^   ^
  797. |        \              |                    |      |   |
  798. "need     the name of   the nodeId      various   baud  |
  799. to call"  the node     (phone number)    flags    rate  |
  800.  flag                                                   |
  801.                                                         |
  802.                             nets to which the node belongs
  803. @end group
  804. @end example
  805.  
  806. The ``various flags'' may consist of one or more of the
  807. following:
  808. @table @samp
  809. @item C
  810. The system is a Citadel-86
  811. @item R
  812. The system is receive-only (i.e., your system will
  813. never call it)
  814. @item M
  815. There is mail pending
  816. @item F
  817. There are file sends/requests pending
  818. @end table
  819. The ``need to call'' flag (the leading asterisk) appears if
  820. there is any work pending for the node; it doesn't mean that your
  821. system will call the node, because the node may be set to receive-only.
  822. (@xref{Editing Nodes}.)
  823.  
  824. @item e[X]it to sysop functions
  825. This should be blatantly obvious.
  826. @end table
  827.  
  828. @node Editing Nodes, Roomsharing, The Net Menu, Networking
  829. @section Editing Nodes
  830. @cindex Editing network nodes
  831. @cindex Nodes, network, editing
  832. @cindex Network nodes, editing
  833.  
  834. There is a sub-menu under the Net menu (which is itself a sub-menu
  835. under the Sysop menu; @pxref{The Net Menu}) which allows you to edit
  836. various things pertaining to nodes in your net-list.  Nodes must obviously
  837. be added to the list before they can be edited, using the @code{[A]dd node}
  838. command; again, @pxref{The Net Menu}.
  839. The commands on the node edit menu are as follows:
  840. @cindex Network node edit menu
  841. @cindex Node edit menu
  842. @example
  843. [A]ccess setting
  844. [B]aud setting
  845. [C]- set receive-only status
  846. L[D] role reversal
  847. [E]xternal dialer setup
  848. [F]- set polling days
  849. [I]D change
  850. [K]ill node from list
  851. [L]ocal setting
  852. [N]ame change
  853. [P]assword settings
  854. [R]ooms shared
  855. [T]oggle Cit-86 status
  856. [U]se nets
  857. [V]iew node configuration
  858. e[X]it net editing
  859. [Z]- set l-d poll count
  860. @end example
  861.  
  862. @table @code
  863. @item [A]ccess setting
  864. An access string is an alternate way of dialing a system.
  865. Normally, the dial command for the modem is formed by taking the
  866. last seven digits of the node ID (for local systems), or the full
  867. ten digits, i.e., including the area code, prefixed by a @samp{1} (for
  868. long-distance systems), and sandwiching this between the dial
  869. prefix and the dial suffix.  (This all assumes that you've got
  870. @vindex usa
  871. @code{#usa} defined in @file{ctdlcnfg.sys}; see @ref{Dialing out},
  872. for more on this stuff.)
  873.  
  874. But if you specify an access string, Fnordadel forgets
  875. all of the above, and simply spits the access string at the modem
  876. (still sandwiched between the dial prefix and suffix.)  You'd use
  877. this if you're dialing a country other than Canada or the USA, for
  878. instance, or if you're dialing a system which is long-distance but
  879. within your area-code. (Some telephone systems don't like it if you
  880. dial 1-@var{areacode}-@var{number} within the @var{areacode}.)  Because the
  881. string is used as-is, you can embed any special dialing commands
  882. that your modem supports, like @samp{,} to pause the dial or whatever.
  883.  
  884. The access string is also used as a command line to pass
  885. to an external dialer that you may have set up for this node; see below.
  886.  
  887. @item [B]aud setting
  888. This allows you to change the node's baud rate.  The
  889. acceptable values here are the same as elsewhere in Fnordadel:
  890. @samp{0} is 300 baud; @samp{1} is 1200 baud; @samp{2} is 2400 baud;
  891. @samp{3} is 9600 baud;
  892. and @samp{4} is 19200 baud.  Note that Fnordadel will never attempt
  893. to call out at a baud rate higher than the highest rate supported
  894. on your system; so it's perfectly safe to list a system at 19200
  895. baud if you're only running on a 2400 baud modem; one day, you
  896. too may have a 19200 baud modem, and when you do, your @sc{bbs} will
  897. be ready for it!
  898.  
  899. @item [C]- set receive-only status
  900. A node can be set to
  901. @cindex Receive-only (net node status)
  902. @dfn{receive-only}, which means that
  903. Fnordadel will never dial out to it, even if there is work
  904. pending for that system---you'll have to wait until the other
  905. system calls yours.
  906.  
  907. If you're entering nodes into your net-list for the sole
  908. purpose of dialing out to them manually using the @code{[T]elephone} command,
  909. (i.e., they aren't Citadels), then set receive-only status to prevent an
  910. accidental network callout.
  911.  
  912. @item L[D] role reversal
  913. This is somewhat of an outdated command; it allows you
  914. to specify whether role-reversal will be performed with this
  915. (presumably long-distance) system.  It defaults to Yes, so you
  916. should never have to muck with it.
  917.  
  918. @item [E]xternal dialer setup
  919. Fnordadel allows you to define an external dialer for
  920. each net node; that is, a program which will do the work of
  921. dialing and connecting with the system.  The main use for this
  922. is if you're using some sort of service like PC-Pursuit, or a
  923. packet-switched network, or whatever.  When using this command,
  924. specify the external dialer number; Fnordadel expects to find
  925. the external dialer programs in your
  926. @vindex netdir
  927. @code{#netdir}, named
  928. @file{dial_@var{n}.prg},
  929. where @var{n} is the dialer number.  If you have an external dialer
  930. set for a node, it will use the access string as
  931. the command tail to pass to the dialer.
  932.  
  933. So, say you're using PC-Pursuit.  You've taken the
  934. PC-Pursuit dialer program and put it in
  935. @vindex netdir
  936. @code{#netdir} as @file{dial_1.prg}.
  937. You've set the external dialer (using the [E] command) to "1".
  938. You've set the @code{[A]ccess} string to @samp{-x foobar}.  When Fnordadel
  939. dials this node, it will run the program so:
  940. @samp{#netdir\dial_1.prg -x foobar}.
  941. When the dialer program finishes, there should be a
  942. carrier present and the baud rate should be set up correctly,
  943. assuming the call connected.  Fnordadel will then proceed
  944. with networking as normal.
  945.  
  946. @item [F]- set polling days
  947. Despite the fact that this command has the word ``polling''
  948. in it, it in fact has nothing to do with
  949. @vindex polling
  950. @code{#polling} (the ability
  951. to make net calls at any time.)  Rather, this command lets you
  952. specify the days on which the net node will be called @emph{whether
  953. there is work pending or not}.  The calls will still happen only during
  954. applicable network events.  This allows you to, say, regularly
  955. call a long-distance network feed to pick up stuff,
  956. even when there is no outgoing work pending.
  957.  
  958. The format of the days specification is any of @samp{Mon},
  959. @samp{Tue}, @samp{Wed}, @samp{Thu}, @samp{Fri}, @samp{Sat} and @samp{Sun},
  960. separated by commas.
  961. So @samp{Mon,Wed,Sat} is a valid specification.  (This format is the
  962. same as that used in the
  963. @vindex event
  964. @code{#event} and
  965. @vindex polling
  966. @code{#polling} definitions;
  967. see @ref{Networking Configuration}.)
  968.  
  969. @item [I]D change
  970. When a system with which you network changes its phone
  971. number, you'll have to make the change in your net-list, and this
  972. is how.  Just enter the standard node ID format:
  973. @example
  974. <@var{country}> <@var{area code}> <@var{number}>
  975. @end example
  976. @noindent
  977. as in @samp{CA 403 425 1779}.
  978.  
  979. Note that if you change the node ID of
  980. a system, the loop-zapper records for that node will be
  981. invalidated.  The loop-zapper will pick up the change as a matter
  982. of course (it will look like a new system, as far as the loop
  983. zapper is concerned), so this isn't a problem or anything.
  984.  
  985. @item [K]ill node from list
  986. This command will remove a node from your net-list.
  987. Simply type its name; Fnordadel will ask you for confirmation
  988. before it kills the node.
  989.  
  990. Currently Fnordadel does not unshare all the rooms
  991. that this system was sharing; you must do so manually before using
  992. this command, or things may screw up later on.  (Edit the room and
  993. type @samp{U}; see @ref{Sysop room-editing commands}, and
  994. @ref{How to share a room}.)
  995. The confirmation prompt will remind you of this fact, in case you forgot.
  996.  
  997. @item [L]ocal setting
  998. This command is for telling Fnordadel whether this
  999. system is long-distance (i.e., out of your local calling area) or local.
  1000. You do want to be accurate with this; don't fib.
  1001.  
  1002. @item [N]ame change
  1003. If the node has changed its nodename, you'll want to
  1004. make the corresponding change in your net-list to keep everything
  1005. working smoothly.  Just type in the new name.
  1006.  
  1007. @item [P]assword settings
  1008. If you suspect security problems when networking with this
  1009. node, then set the passwords.  They must be agreed upon by you and
  1010. the other Sysop beforehand.  You'll define the password that your
  1011. system uses when calling the other one, and the password that your
  1012. system should expect from the other when it calls you.  They may be
  1013. the same, though for optimum security you'd want them different.
  1014.  
  1015. Please note that Citadel-86 systems use a different form of
  1016. net passwords, and therefore you must tell Fnordadel that this node is a
  1017. Cit-86, or passwords will not work.  See @code{[T]oggle Cit-86 status}, below.
  1018.  
  1019. @item [R]ooms shared
  1020. This command prints out a list of the rooms that your
  1021. system is sharing with this node.  Rooms with messages that need
  1022. to be sent to the node are flagged with an asterisk.
  1023.  
  1024. @item [T]oggle Cit-86 status
  1025. Actually, it's not a toggle, but @code{[C]} was taken.  Anyway,
  1026. if the node is a Citadel-86 system, you should tell Fnordadel
  1027. so by using this command.  The value of this flag is checked for
  1028. things like file requests, network protocol changes, and net
  1029. passwords, so it is
  1030. essential to turn the flag on for Citadel-86es.  Note that direct
  1031. Cit-86 derivatives like Citadel-68k for the Amiga are functionally
  1032. identical to Cit-86 (as far as networking goes) so you must turn
  1033. this flag on for them as well.
  1034.  
  1035. @item [U]se nets
  1036. Fnordadel uses the concept of
  1037. @cindex Network groups
  1038. @dfn{net numbers} to form logical groups of
  1039. systems.
  1040. When you first enter a net node into your net-list, it
  1041. defaults to being a member of net number 0.  But you can set it
  1042. up so that it's a part of a different net, or several nets at
  1043. once---valid net numbers are from 0 to 31.  These net numbers are
  1044. referred to in network event definitions (a node must be part of
  1045. the net to which the net event applies for Fnordadel to call the
  1046. node during the event) and in polling (which applies to specific
  1047. net numbers).  You may also remove a node from all nets; this
  1048. has the effect of removing it from the standard list of valid net
  1049. nodes printed out when a user hits @samp{?} when asked for the target
  1050. system of a piece of net-mail; and also removes it from
  1051. consideration when the system is trying to route net-mail
  1052. (@pxref{Path aliasing}).
  1053.  
  1054. The format of the @code{[U]se nets} specification is as follows:
  1055. To add a node to some nets while preserving the current settings,
  1056. use @samp{+@var{netlist}}.  To remove a node from some nets, use
  1057. @samp{-@var{netlist}}.
  1058. To specify a totally new set of nets, just use @var{netlist}.  What's
  1059. a @var{netlist}, you ask?  It's just a series of net numbers delimited
  1060. by commas or spaces.  For example, if the node is currently in
  1061. net 0 and 2, and you wish to add it to net 5, type @samp{+5} when asked
  1062. for the nets you want to use.  To remove a node from net 0 (the
  1063. default net), type @samp{-0}.
  1064.  
  1065. @item [V]iew node configuration
  1066. This command prints a quick summary of the settings for
  1067. this node.
  1068.  
  1069. @item e[X]it net editing
  1070. This exits back to the Net menu.
  1071.  
  1072. @item [Z]- set l-d poll count
  1073. You can tell Fnordadel how many times you'd like it
  1074. to attempt to call an l-d system during an event before giving
  1075. up, hence this command.  Normally the system will be called
  1076. until Fnordadel obtains a carrier, and then will not be
  1077. called again during that session, whether the call was a
  1078. complete success or not.  This command overrides that; just
  1079. specify the number of calls.
  1080. @end table
  1081.  
  1082. @node Roomsharing, Mail Routing, Editing Nodes, Networking
  1083. @section Roomsharing
  1084. @cindex Sharing rooms
  1085. @cindex Room sharing
  1086.  
  1087. For most systems, the primary purpose of networking is to share
  1088. rooms.  Rooms designated as shared (or ``networked'') by the Sysop will
  1089. have all messages entered in them sent to the systems with which he has
  1090. shared the room; the other systems have, presumably, set up the same
  1091. thing, and so you end up with a sort of super-room spanning several
  1092. @sc{bbs}es.  (There are zillions of little exceptions and modifications to the
  1093. above description, which we'll let you discover for yourself.)
  1094.  
  1095. @node How to share a room, Topography and backboning, Roomsharing, Roomsharing
  1096. @subsection How to share a room
  1097.  
  1098. To make a room shared, you need to edit the room.  This
  1099. is accomplished by @code{.A(ide) E(dit)} while in the room in question;
  1100. you must have Aide status (and be logged in, naturally) to use this.  In
  1101. this menu you'll find a few useful commands, detailed here.
  1102. (For more on the room edit menu, see @ref{The .A(ide) command}, and
  1103. @ref{Sysop room-editing commands}.  These are the commands we're
  1104. interested in here:
  1105. @cindex Aide room edit menu
  1106. @cindex Room edit menu
  1107. @example
  1108. [S]hared
  1109. [U]nshare
  1110. [Y]- toggle backbone status
  1111. [N]et readable
  1112. [Z]- autonetted room
  1113. [P]ermanent
  1114. @end example
  1115.  
  1116. @table @code
  1117. @item [S]hared
  1118. Use this command to make a room shared to start
  1119. with, and also to add new systems to the shared list for
  1120. this room.  When you hit @samp{S} you'll be asked if you want
  1121. to make the room shared; answering ``no'' will make the room
  1122. not shared and return to the menu.  (If the room was shared
  1123. before, it will still be made unshared, but no nodes will be
  1124. removed from the shared list for the room.  This may cause
  1125. strange behavior, so be careful.)
  1126.  
  1127. If you answer ``yes'', Fnordadel will ask for a
  1128. list of net nodes with which to share the room.  Typing
  1129. a @samp{?} will list the choices available to you; systems
  1130. must be in your net-list, obviously, before you can share
  1131. a room with them.  Simply enter the name(s) of the nodes, one at a time,
  1132. with which to share the room, and enter a @samp{<CR>}
  1133. with no node name at the prompt to finish.
  1134.  
  1135. @item [U]nshare
  1136. Use this command to remove one or more systems
  1137. from the sharing list for this room.  Simply type their
  1138. name(s), one at a time, and finish with a @samp{<CR>} at the prompt.  If you
  1139. want to make the room completely unshared, i.e., not a
  1140. network room any more, use this command to disable each
  1141. node currently connected to the room.  Then use @code{[S]hare}, and answer
  1142. ``no'' to make the room non-networked.
  1143.  
  1144. @item [Y]- toggle backbone status
  1145. This command lets you turn backboning on
  1146. or off for one or more nodes with which the room is being shared.
  1147. @xref{Topography and backboning}, for more on backboning.
  1148.  
  1149. @item [N]et readable
  1150. This command tells Fnordadel whether files can
  1151. be requested from this room over the network.  It has no
  1152. effect if the room is not a directory room, obviously.
  1153. If you set the room to be not network readable, then any
  1154. and all file requests for this room will be refused.
  1155.  
  1156. @item [Z]- autonetted room
  1157. In a normal shared room, messages are only saved as
  1158. Networked messages if the authors have net privileges; this
  1159. can, however, be overridden using the
  1160. @cindex Auto-net (room type)
  1161. @dfn{autonet} feature.
  1162. If a room is autonet, all messages entered in it are saved
  1163. as net messages, regardless.
  1164.  
  1165. Use this with caution.  Especially if the room is a
  1166. long-distance networked room, you could be in for a rude
  1167. shock if a ruggie phones and dumps a load of rubbish into
  1168. it---you'll pay to send it all out over the net, and all
  1169. the other systems sharing the room will likely be very
  1170. peeved.
  1171.  
  1172. @item [P]ermanent
  1173. This is not strictly a networking option, per se,
  1174. but it rates a mention.  If a room is shared, you'll likely
  1175. want to make it permanent to stop Fnordadel from
  1176. automatically expiring it if it empties of messages.  (Say, 
  1177. if you haven't managed to call the feed for a while, or
  1178. whatever.)  Other systems tend to get peeved if shared
  1179. rooms start dropping off your system without any advance
  1180. warning, since their @code{Aide>} rooms will fill up with warnings
  1181. when they attempt to resume sending messages.
  1182. @end table
  1183.  
  1184. @node Topography and backboning, The loop-zapper, How to share a room, Roomsharing
  1185. @subsection Topography and backboning
  1186. @cindex Network topography
  1187. @cindex Backboning
  1188. @cindex Network backboning
  1189. @cindex Topography, network
  1190.  
  1191. The standard room sharing method, used for most
  1192. local connections, is for every system carrying a given room to
  1193. share the room with all other systems carrying it.  This kind of
  1194. arrangement would look like this:
  1195. @example
  1196. @group
  1197.         ---NodeA---          Every system is sharing the room
  1198.        /     |     \         with every other system.
  1199.   NodeB------)-----NodeD        
  1200.        \     |     /    
  1201.         ---NodeC---     
  1202. @end group
  1203. @end example
  1204. The main advantage in this setup is that it's quite
  1205. robust.  If a system suddenly drops off the net, it won't disrupt
  1206. anything (topography-wise, that is; people will probably notice, but it
  1207. won't necessitate any change in the room sharing method.)
  1208.  
  1209. However, it's not very efficient in terms of aggregate
  1210. time spent doing networking.  Whenever there are new messages in
  1211. the shared room, each system has to call all the others.  In
  1212. addition, this method is totally insane if the systems are not
  1213. local to each other, or if there is a large number of
  1214. systems sharing the room.  So, backboning was invented.
  1215.  
  1216. Backboning allows network messages to be passed on to another
  1217. node even if they weren't entered on your system.  More
  1218. specifically, if you turn backboning on for a given system, say @var{foobar},
  1219. in a given room, all messages received by your system (except
  1220. from @var{foobar} itself, of course) in that room will be sent
  1221. out to @var{foobar}, in addition to all messages entered locally
  1222. on your system.
  1223.  
  1224. What this does to the net map is allow much greater
  1225. flexibility in connections.  First, here is an example which employs a
  1226. central hub system with lots of little ``spokes'':
  1227. @example
  1228. @group
  1229.       NodeI  NodeB  NodeC          NodeA shares the room with
  1230.           \    |    /              all systems, while all the
  1231.            \   |   /               other systems share the
  1232.   NodeH----NodeA(Hub)----NodeD     room only with NodeA.  NodeA
  1233.            /   |   \               turns backboning on for all
  1234.           /    |    \              systems; the other systems
  1235.       NodeG  NodeF  NodeE          do not use backboning.
  1236. @end group
  1237. @end example
  1238. This arrangement will basically shift the bulk of the net load
  1239. to NodeA.  The other nodes will not know that any backboning is
  1240. going on; they will simply share the room in the standard manner
  1241. with NodeA.  NodeA is responsible for passing all of the other
  1242. systems' messages on to all the other systems by turning on
  1243. backboning.
  1244.  
  1245. This works pretty well in local situations, and in long-distance
  1246. situations where the cost of calling NodeA is not much
  1247. different than calling any one of the other nodes.  No node is ever
  1248. more than two hops away from any other, and so propagation times
  1249. are good.
  1250.  
  1251. In local situations you might want to use this arrangement
  1252. to reduce the aggregate time spent in net mode by concentrating it
  1253. on NodeA; the other systems will only have to make one net call
  1254. every time new messages are entered, instead of many calls.
  1255. However, you've probably noticed a drawback---if NodeA ever
  1256. disappears, the sharing scheme has to be redone, possibly by
  1257. promoting one of the other systems to be the hub.
  1258.  
  1259. In long-distance situations, there are often more cost-effective
  1260. ways of arranging things.  Here's another example:
  1261. @example
  1262. @group
  1263.   NodeC                NodeH          Nodes B, C, F, G and H
  1264.     \                   /             share as normal;
  1265.      \                 /              Nodes A, D, and E flag
  1266.     NodeA---NodeD---NodeE---NodeG     all other systems as
  1267.      /        |                       backboned.
  1268.     /         |                       
  1269.   NodeB     NodeF                    
  1270. @end group
  1271. @end example
  1272. This arrangement allows NodeG, for example, to net with
  1273. NodeE instead of a (possibly more distant) hub like NodeD.  It
  1274. allows Nodes A, B and C to rely on NodeD for their feed (we assume
  1275. in this example that A, B, C and D are all local to each other.)
  1276. (In this case, it would be nice if the Sysops of A, B and C helped
  1277. with NodeD's phone bill.)
  1278.  
  1279. There are many variations on the above examples; the
  1280. guiding rule is that if you wish to pass messages on to another
  1281. system, turn backboning on for that system.  But be @emph{very very}
  1282. careful that loops are not introduced in the net topography, or
  1283. you'll have a ``vortex''.
  1284. @example
  1285. @group
  1286.         NodeC         NodeH          Nodes B, C, F, G and H
  1287.          /\            /             share as normal;
  1288.         /  \          /              Nodes A, D, and E flag
  1289.     NodeA--NodeD---NodeE---NodeG     all other systems as
  1290.      /       |                       backboned.
  1291.     /        |                       
  1292.   NodeB    NodeF                    
  1293. @end group
  1294. @end example
  1295. This modification of the previous example illustrates how a vortex can
  1296. happen.  NodeA and NodeD are each backboning a room to all their net
  1297. connections.  NodeC incorrectly decides to share the room with both
  1298. NodeA and NodeD.  Thus, every message entered on NodeC is sent to both
  1299. NodeA and NodeD.  But because NodeA and NodeD backbone the room to
  1300. each other, they also send all of NodeC's messages to each other.  NodeD
  1301. will also send the duplicates out to NodeE, which will propagate them to
  1302. its local connections.  This obviously causes a lot of duplication (and
  1303. expense, if there are any long-distance connections).  To automatically
  1304. detect and eliminate this vortex problem, a loop zapper was developed.
  1305.  
  1306. @node The loop-zapper, Shared room aliasing, Topography and backboning, Roomsharing
  1307. @subsection The loop-zapper
  1308. @cindex Loop-zapper
  1309. @cindex Network loop-zapper
  1310.  
  1311. With the advent of backboning came sloppy net management.
  1312. (Well, we suspect that the sloppy net management was around before,
  1313. but it never had such a good opportunity to manifest itself.)
  1314. Anyway, if your room sharing arrangement has a loop in it,
  1315. you have what we in Edmonton dubbed a
  1316. @cindex Vortex
  1317. @dfn{vortex}.  (The term appears
  1318. to have gained national popularity.)  The loop-zapper is a brute-force
  1319. method of stopping vortexes.
  1320.  
  1321. The way it works is pretty simple.  Each incoming networked
  1322. message has in it the node ID of the originating system, the
  1323. date and time on which the message was created, and possibly a message ID
  1324. number from the system that originated the message.  Fnordadel keeps a
  1325. database in which it stores the node IDs of all systems from which
  1326. it has ever---directly or indirectly through backboning---received
  1327. a message.
  1328.  
  1329. For each node ID, Fnordadel then records the date of the latest message to be
  1330. received, and what its message ID number was (if any; STadel does not pass
  1331. along such information, but Cit-86 and its clones for other machines
  1332. do, as does Fnordadel).  Moreover, this is done in each room
  1333. in which messages have been received.  So
  1334. when new messages come in, the node IDs, dates, message ID numbers
  1335. and rooms of the
  1336. messages are checked against the loop-zapper database.  If a
  1337. message
  1338. @itemize @bullet
  1339. @item
  1340. is dated earlier than the latest one received in that room
  1341. from that node, and
  1342. @item
  1343. has a lower message ID number than is recorded in the database
  1344. @end itemize
  1345. @noindent
  1346. it is assumed to be an old message coming back again, and will be rejected.
  1347. A message to that
  1348. effect will be printed on the screen (and in the net-log, if you're
  1349. keeping one.)
  1350.  
  1351. To enable the loop-zapper, either define the @file{ctdlcnfg.sys}
  1352. @pindex +zap (citadel)
  1353. variable @code{zaploops} to @samp{1}, or invoke @code{citadel} with the command
  1354. line argument @samp{+zap}.  The loop-zapper database is kept in your
  1355. @vindex netdir
  1356. @code{#netdir} as @file{ctdlloop.zap}.  If you happen to delete this file,
  1357. you'll have to reconfigure and start the loop-zapper again.  The
  1358. loop-zapper will be built as the messages come in; you can also
  1359. build a loop-zapper which reflects your current message base by
  1360. running the utility @code{makezt}.  The contents of your loop-zapper
  1361. @pindex makezt
  1362. @pindex scanzt
  1363. database may be viewed by using the utility @code{scanzt}.  See the
  1364. respective man pages for directions on using these programs.
  1365.  
  1366. Fnordadel tries to be smart about detecting truly looped
  1367. messages, versus ones that are abnormal but not duplicates.  This is
  1368. why it checks both the date/time stamp @emph{and} message ID number of each
  1369. message, and only rejects those where both values are older than
  1370. the database shows.  For example, it's possible for a glitch or system crash on
  1371. another system to cause it to start sending you messages with
  1372. message ID numbers that look old; but if
  1373. the dates are new, the messages will be accepted, not rejected, on the
  1374. assumption that the other system's message ID counter got reset to a value
  1375. lower than before.
  1376.  
  1377. Likewise, the clock may have been screwed up on some other system (e.g., its
  1378. clock got set to some point in the future, some messages were sent out, and
  1379. its clock is now back at the correct
  1380. value, or else it got set to some point in the past and hasn't been
  1381. corrected yet).  Your loop-zapper database will thus show a date/time
  1382. that is greater than the one on the incoming messages, but as long as
  1383. the messages have new message ID numbers, they will be accepted, not rejected.
  1384. Note that no version of STadel ever sends the message ID number, so
  1385. the loop-zapper only has the date/time stamp to work with.  Thus it's
  1386. easier for Fnordadel to mistakenly start zapping messages from an
  1387. STadel, if that node's clock got messed up.
  1388.  
  1389. The Fnordadel loop-zapper database is also self-correcting
  1390. to some degree.  When any message is accepted in a room, both its
  1391. date/time stamp and message ID number are recorded as being the newest ones
  1392. seen, even if they are lower than what was there before.  In this way,
  1393. your database will weed out incorrect date/time values, or message ID numbers.
  1394. It can't weed out both if they occur simultaneously, though; if a new
  1395. message comes in and has the bad luck of having an old date/time and
  1396. an old message ID number, the loop-zapper will reject it.
  1397.  
  1398. If you ever have
  1399. a node get screwed up and the database doesn't seem to correct itself,
  1400. the only way to stop Fnordadel from zapping all the node's messages
  1401. is to delete your @file{ctdlloop.zap} file and start from scratch.  Run the
  1402. @pindex makezt
  1403. @code{makezt} utility to build a new database from your current message
  1404. base, or just let Fnordadel run and accumulate new information over
  1405. time.
  1406.  
  1407. From time to time, your system may incorrectly zap a small
  1408. number of messages from one or more nodes, and then return to normal.
  1409. Zapped messages can be saved off-line if you so desire
  1410. (see @code{keepdiscards} in @ref{Optional parameters}.)
  1411. You may then read through them and optionally delete them
  1412. permanently or tell Fnordadel to integrate them into your message
  1413. base (if they look like they were zapped in error).  @xref{The Net Menu},
  1414. for instructions on these commands.
  1415.  
  1416. Although the loop zapper is quite smart, there's currently one glitch in it.
  1417. You may notice that if two identical messages come in during the same network
  1418. call, the zapper will let both of them all through.  Hey, so it's only close
  1419. to perfect@dots{}
  1420.  
  1421. @node Shared room aliasing, A few hopefully wise words, The loop-zapper, Roomsharing
  1422. @subsection Shared room aliasing
  1423. @cindex Network room alias
  1424. @cindex Room alias
  1425. @cindex Aliasing shared rooms
  1426. @cindex Shared room aliasing
  1427.  
  1428. If you don't like the standard name by which a shared
  1429. room is known on the network and would like to have that room
  1430. differently named on your system, you can accomplish this using
  1431. shared room aliasing.
  1432.  
  1433. Simply put a file called @file{alias.sys} in your
  1434. @vindex netdir
  1435. @code{#netdir}.
  1436. It should consist of @samp{<TAB>}-separated fields as follows:
  1437. @example
  1438. <@var{system}> <@var{roomname}> <@var{alias}>
  1439. @end example
  1440. @table @var
  1441. @item <system>
  1442. is the name of the system to which the alias
  1443. will apply; the special name @samp{%all} makes the alias apply to
  1444. any and all systems with which you share the room.
  1445. @item <roomname>
  1446. is the name of the room on your system.
  1447. @item <alias>
  1448. is the name of the room on the other system(s).
  1449. @end table
  1450.  
  1451. We actually recommend against using the aliasing feature
  1452. unless there's a really good reason for doing so.  The standard
  1453. room names are usually fine, and more importantly, it's possible
  1454. to alias a room to another name and then share the room with
  1455. another system; the Sysop of the other system may not realise that
  1456. the room he's getting from you is the same as the standard net
  1457. room and may decide to share it with yet another system in such a
  1458. way as to create a vortex.  So if you use this feature, be very
  1459. careful.
  1460.  
  1461. Also note that if you are sharing aliased rooms with a system, and
  1462. change the name of that system in your net list, you must exit
  1463. Fnordadel and edit @file{alias.sys} to update it with the system's
  1464. new name.  If you don't, Bad Things will happen.
  1465.  
  1466. @node A few hopefully wise words,  , Shared room aliasing, Roomsharing
  1467. @subsection A few hopefully wise words
  1468.  
  1469. @itemize @bullet
  1470. @item
  1471. Be considerate when sharing or unsharing rooms with a
  1472. system.  If you tell another Sysop to share a room with
  1473. you, make sure you've shared it with him, or his @code{Aide>}
  1474. room will be flooded with messages reporting that your
  1475. system isn't sharing the room with his.
  1476. @item
  1477. We've already mentioned this, but it bears repeating
  1478. any number of times:  Be careful when using backboning,
  1479. and when sharing rooms in general.  Make sure you
  1480. understand the topography of the room in question before
  1481. messing about; you don't want to cause a vortex, do you?
  1482. <PROD>  No, you don't.
  1483. @item
  1484. Please try to police the net rooms.  This applies
  1485. especially to the national networked rooms, which cost
  1486. people money to transport.  If you have a twit or two
  1487. who are entering stupid messages (or, worse, ``vandalism''
  1488. type of stuff like 10K of profanities and so on), it is up
  1489. to you to stomp on it as soon as possible.  Moreover,
  1490. you must also be on the lookout for what Citadelians
  1491. refer to as @dfn{room drift}; if users on your system start
  1492. talking about Pascal programming in a networked Religion
  1493. room, you must put a stop to it.  Please be considerate
  1494. for your fellow Sysops downstream.
  1495. @item
  1496. You should be aware that there are some incompatibilities between
  1497. systems descended from STadel and those directly descended
  1498. from Citadel-86.  We are working on eliminating them all in
  1499. Fnordadel, and hope eventually to make Fnordadel a
  1500. seamless connection between the STadel network and the Cit-86
  1501. network.  For the time being, not everything works perfectly.
  1502. @xref{Networking with Citadel-86}.  As for normal room sharing, you
  1503. should have only one real problem any more:  Cit-86 messages
  1504. can only be 7500 characters long, while STadel and
  1505. Fnordadel messages can be 10000 characters long.  Thus
  1506. long-winded people posting on your system will get cut short
  1507. if the messages migrate over to a Cit-86.  This could cause
  1508. some confusion.
  1509. @end itemize
  1510.  
  1511. @node Mail Routing, Networking with Citadel-86, Roomsharing, Networking
  1512. @section Mail Routing
  1513. @cindex Routing network mail
  1514. @cindex Network mail routing
  1515. @cindex Mail routing, network
  1516.  
  1517. Another popular use for the Citadel network is for private mail.
  1518. In the simplest case, that of sending mail to another user on the same
  1519. system, mail delivery is an understandably easy job.  When you want to
  1520. send mail to a user on a system which connects directly with yours, it's
  1521. also a pretty easy thing.  However, when you want to route mail through
  1522. one or more intermediate nodes before it reaches its destination, things
  1523. get a little tricky.  This section details a few helpful features
  1524. designed to make mail routing simpler and more effective.
  1525.  
  1526. @node Net addresses, Path aliasing, Mail Routing, Mail Routing
  1527. @subsection Net addresses
  1528. @cindex Network addresses
  1529. @cindex Addresses, network
  1530.  
  1531. When you go to the @code{Mail>} room and hit @code{[E]nter}, the
  1532. system asks you to tell it to whom you want to send the mail.
  1533. If the mail is going to be a networked message, you have two
  1534. ways in which the address can be specified.  One is using @samp{@@}
  1535. notation, and the other is using explicit
  1536. @cindex Bangpaths
  1537. @cindex Network addresses
  1538. @dfn{bangpaths}, which
  1539. have as their distinguishing feature the @samp{!} character as a
  1540. separator.  The two forms produce identical results; it's just a
  1541. matter of taste, really.
  1542.  
  1543. The @samp{@@} form is as follows:
  1544. @example
  1545. @var{user}@@@var{system}
  1546. @end example
  1547. @noindent
  1548. which means that you wish to send the mail to the user
  1549. named @var{user} on the node called @var{system}.
  1550.  
  1551. The bangpath form is like this:
  1552. @example
  1553. @var{system}!@var{user}
  1554. @end example
  1555. @noindent
  1556. which means the same thing as the previous example.
  1557.  
  1558. If you want to send mail through several nodes, you'll
  1559. have to provide a `To:' address something like this:
  1560. @example
  1561. node_a!node_b!node_c!user ,
  1562. @end example
  1563. @noindent
  1564. or perhaps
  1565. @example
  1566. node_b!node_c!user@@node_a
  1567. @end example
  1568. @noindent
  1569. As you'll notice, the @samp{@@} and @samp{!} forms can be mixed.
  1570. The two examples above both address the mail to a user on
  1571. @samp{node_c}, which (we happen to know) is reachable by a direct
  1572. path from our system to @samp{node_a} to @samp{node_b} to @samp{node_c}.
  1573.  
  1574. Your system may also receive routed mail from other
  1575. systems with which it networks.  If the mail is destined for a
  1576. user on your system, then it is delivered to that user and the
  1577. message stops.  But the message may be addressed to someone on a
  1578. system further on.  If you want your system to be able to pass
  1579. such mail on, you'll have to make sure that the @file{ctdlcnfg.sys}
  1580. variable
  1581. @vindex forward-mail
  1582. @code{#forward-mail} is defined as @samp{1}.  If it's @samp{0}, your
  1583. node will simply reject all routed mail.
  1584.  
  1585. @node Path aliasing, Hubbing, Net addresses, Mail Routing
  1586. @subsection Path aliasing
  1587. @cindex Path aliases
  1588. @cindex Network path aliasing
  1589.  
  1590. So, forming net addresses is easy, right?  But it's a
  1591. pain to have to remember explicit addresses through half a dozen
  1592. other systems to reach the one you want.  So Fnordadel allows
  1593. you to define, once and for all (or until you change the
  1594. definition), the paths to systems.  Then when someone wants to
  1595. send mail to someone on such a system, they need only type a `To:'
  1596. field of @samp{user@@system}, and let Fnordadel figure out where
  1597. @samp{system} is.  You can also use the path aliasing feature in
  1598. strictly local situations; if you have, say, a Citadel-86 system
  1599. with a really weird nodename, you can alias it to something short
  1600. and essentially pretend that its name (for the purposes of net
  1601. mail) has changed.
  1602.  
  1603. The way it works:  First of all, if you want to enable
  1604. the path aliasing feature, you should define the @file{ctdlcnfg.sys}
  1605. variable
  1606. @vindex pathalias
  1607. @code{#pathalias} to be @samp{1}.  If it's @samp{0}, Fnordadel won't
  1608. even bother.  The path alias data is stored in a file called
  1609. @file{ctdlpath.sys} in your
  1610. @vindex netdir
  1611. @code{#netdir}.  When someone enters a message
  1612. addressed to an unknown node, Fnordadel looks in this file for
  1613. an alias to the unknown system.  (Note that ``unknown'', in this
  1614. context, means any system which is not in your net-list, or which
  1615. is in your net-list and is not a member of any nets.
  1616. See the @code{[U]se nets} command in @ref{Editing Nodes}.
  1617. Also note that incoming mail from other nodes is
  1618. subjected to the same treatment; Fnordadel doesn't care
  1619. whether the mail is local.)  If it finds an address, it will
  1620. substitute this into the `To:' field of the message and mail the
  1621. message off to its target.  If the message was local, there may
  1622. be special charges (in terms of ld-credits) which apply to the
  1623. message; @pxref{Optional parameters}, on the @file{ctdlcnfg.sys} variable
  1624. @vindex ld-cost
  1625. @code{#ld-cost} for one such cost.
  1626.  
  1627. The @file{ctdlpath.sys} file consists of @samp{<TAB>}-separated lines of the form:
  1628. @example
  1629. @var{alias} @var{path} [@var{surcharge}]
  1630. @end example
  1631. @noindent
  1632. where @var{alias} is the nodename being aliased;
  1633. @var{path} is a string defining the path to the node; and
  1634. @var{surcharge} is an optional number of ld-credits
  1635. which will be charged to the user for using the
  1636. aliasing feature.
  1637.  
  1638. Here is a sample @file{ctdlpath.sys}:
  1639. @example
  1640. devnull @samp{<TAB>} poopsie!%s @samp{<TAB>} 1
  1641. alberta @samp{<TAB>} dragos!myrias!%s @samp{<TAB>} 2
  1642. Backfence @samp{<TAB>} Backfence [MN] @samp{<TAB>} 0
  1643. Silly @samp{<TAB>} Silly_Cit-86_Name[MN] @samp{<TAB>} 10
  1644. @end example
  1645. @noindent
  1646. The special sequence @samp{%s} means ``the destination node''.
  1647. In this example, let's say we wanted to mail to @samp{Holly} at the
  1648. system @samp{devnull}.  We enter a `To:' field of @samp{Holly@@devnull}.
  1649. Fnordadel discovers that @samp{devnull} is not in our net-list, so
  1650. it reverts to Plan B---path aliasing.  Searching @file{ctdlpath.sys}
  1651. for an entry for @samp{devnull}, it finds that the route to @samp{devnull} is
  1652. through @samp{poopsie}; so it massages the path into @samp{poopsie!devnull}
  1653. (since the alias specified @samp{poopsie!%s}, and @samp{devnull}, the
  1654. destination system, is substituted for the @samp{%s}).  After
  1655. appending the user name to the whole thing, the `To:' field is
  1656. @samp{poopsie!devnull!Holly}; Fnordadel now spools the mail for
  1657. delivery to @samp{poopsie}.  The user who entered the mail is charged
  1658. two ld-credits---one for the fact that it's long-distance mail,
  1659. and one for the surcharge listed in @samp{ctdlpath.sys}.
  1660.  
  1661. Or, in the above example, if we wanted to send mail to
  1662. a user on @samp{Silly_Cit-86_Name[MN]} and didn't want to make our users
  1663. or ourselves type that, we'd simply be able to give a `To:' field
  1664. of @samp{user@@silly} and let Fnordadel worry about it; it would
  1665. check the alias file and use the entry therein to massage the `To:'
  1666. field to @samp{Silly_Cit-86_Name[MN]!user}.
  1667.  
  1668. @node Hubbing, Domains, Path aliasing, Mail Routing
  1669. @subsection Hubbing
  1670. @cindex Network hub
  1671. @cindex Hubbing, network
  1672.  
  1673. What happens if your system gets mail addressed to an
  1674. unknown node, and it doesn't have an alias defined for that node?
  1675. If you have defined the @file{ctdlcnfg.sys} variable
  1676. @vindex hub
  1677. @code{#hub}, then your
  1678. system will have a last resort.  All mail which cannot be dealt
  1679. with either by direct connection with the target system, or by
  1680. an explicit path in the message in which the first node in the
  1681. path is directly connected, or by path aliasing, will be
  1682. forwarded to the system defined as your
  1683. @vindex hub
  1684. @code{#hub}.  This system
  1685. (hopefully) will be better able to deal with the mail than yours
  1686. was, either because it is connected to more systems directly, or
  1687. because it has a more extensive path alias file than you have.
  1688.  
  1689. Mail which is entered locally and is forwarded to the
  1690. @vindex hub
  1691. @code{#hub} for delivery can be charged extra ld-credits based on the
  1692. setting of the @file{ctdlcnfg.sys} variable
  1693. @vindex hub-cost
  1694. @code{#hub-cost}---see
  1695. @ref{Optional parameters}.
  1696.  
  1697. @node Domains,  , Hubbing, Mail Routing
  1698. @subsection Domains
  1699. @cindex Domains
  1700. @cindex Network domains
  1701.  
  1702. Domains are supported in this version of Fnordadel, but in
  1703. a somewhat superficial manner.  Primarily for Citadel-86 compatibility,
  1704. you can set the value of a @file{ctdlcnfg.sys} parameter called
  1705. @vindex domain
  1706. @code{#domain}, to tell Fnordadel what Citadel-86-style domain you are in.
  1707. @xref{Optional parameters}.  Citadel-86 uses this field for domain mail,
  1708. a feature Fnordadel does not yet support.
  1709.  
  1710. We also have some additional domain support.  By placing lines beginning
  1711. with a period (@samp{.}) character into @file{ctdlpath.sys}, we can tell
  1712. Fnordadel information about what other domains we are a part of and
  1713. about how to reach other domains.  For example, consider the
  1714. following lines in @file{ctdlpath.sys}:
  1715. @example
  1716. .uucp @samp{<TAB>} foobar!%s @samp{<TAB>} 1
  1717. .citadel
  1718. .uucp
  1719. @end example
  1720. @noindent
  1721. These lines define us to be members of the @samp{.citadel} and
  1722. @samp{.uucp} domains; in addition, they specify that any mail bound for
  1723. the @samp{.uucp} domain is to be routed through @samp{foobar} (and to be
  1724. charged, in the local case, an additional ld-credit.)
  1725.  
  1726. Look for better domain support in later versions.
  1727.  
  1728. @node Networking with Citadel-86, Other Networks, Mail Routing, Networking
  1729. @section Networking with Citadel-86
  1730. @cindex Citadel-86, networking with
  1731.  
  1732. Originally developed by Hue, Jr., back in the early days of
  1733. Citadel-86, the Citadel networker is a fairly flexible beast.  Indeed, it
  1734. has proved so flexible that numerous Citadel developers have mutated it in
  1735. a variety of interesting ways.  A major mutator, so to speak, was David
  1736. Parsons (orc), who did STadel, from which Fnordadel is descended.  Some
  1737. of the improvements and changes resulted in incompatibilities with Cit-86
  1738. networking.
  1739.  
  1740. It is our intention to eliminate or work around all of these
  1741. things at some point, hopefully in the near future.  In order to make your
  1742. Fnordadel work as smoothly as possible with a Cit-86, you should set the
  1743. Cit-86 status flag for it in your net list, and ask its Sysop to set the
  1744. STadel status flag for your system in his net list.   As of this
  1745. writing, the following are the areas in which Cit-86 and Fnordadel
  1746. networking differ:
  1747.  
  1748. @itemize @bullet
  1749. @item
  1750. Mail routing has been done in remarkably different ways.  Cit-86
  1751. supports STadel-style mail routing as a sort of after-hack, but
  1752. don't rely on it too much.  (Similarly, don't tell your local
  1753. Cit-86 friends to rely on you too much for mail routing, either.)
  1754. @item
  1755. Fnordadel currently has minimal support for Cit-86 domains, although
  1756. it will set the domain field on locally-originating messages, and pass
  1757. through the domain field on net messages from other systems.
  1758. @xref{Optional parameters}, and @ref{Domains}.
  1759. @item
  1760. Cit-86 supports a networking option to compress network information on
  1761. the fly.  Fnordadel does not yet support this facility.  This will
  1762. probably cause you to see messages something like ``Reply BAD: <10> unknown''
  1763. during networking sessions.  This is nothing to worry about.
  1764. @item
  1765. Cit-86 doesn't use the
  1766. @vindex organization
  1767. @code{#organization} field, or pass it on to other
  1768. systems that it nets with, so in backboned shared rooms, messages
  1769. from your system will lose the
  1770. @vindex organization
  1771. @code{#organization} field the first time
  1772. they pass through a Cit-86.
  1773. @item
  1774. Cit-86 also doesn't support the STadel message subject field.
  1775. @item
  1776. Cit-86 messages are limited to 7500 characters in size, while STadel
  1777. (and its descendants) support messages up to 10000 characters long.
  1778. Thus when your messages pass through a Cit-86, they may get chopped
  1779. short.
  1780. @end itemize
  1781.  
  1782. The following are incompatibilities which we inherited from STadel,
  1783. but which we have fixed:
  1784.  
  1785. @itemize @bullet
  1786. @item
  1787. The network sendfile/file request methods used to be different;
  1788. sending files to a Cit-86 would work (and sendfiles from the Cit-86 to
  1789. you would also work), but file requesting (in either direction)
  1790. wouldn't.  This is now fixed---everything should work.
  1791. @item
  1792. Fnordadel and Citadel-86 couldn't use the Ymodem protocol
  1793. during netting; they should be able to now.
  1794. @item
  1795. The network passwords should work fine now.
  1796. @end itemize
  1797.  
  1798. The following things are bits of funny business between Cit-86 and
  1799. Fnordadel, but are harmless:
  1800.  
  1801. @itemize @bullet
  1802. @item
  1803. If a Cit-86 is backboning any rooms to your system, you may notice
  1804. that each time it nets with your system, it will attempt to send
  1805. each backboned room, whether or not there are any new messages to be
  1806. transferred.  (It will send 0 messages, basically.)  We can't imagine why
  1807. it does this, but it seems to be normal and will not cause a problem.
  1808. @item
  1809. There are net commands that Cit-86 supports but Fnordadel doesn't,
  1810. and possibly vice versa.  In particular, Cit-86 has two commands
  1811. that Fnordadel doesn't yet know about: 8 (a different form of
  1812. room-sharing) and 10 (for data compression during networking).  They
  1813. will cause messages during
  1814. networking, such as ``Reply BAD: <10> unknown'', when a Cit-86 asks your
  1815. system to carry out such a command.  These are nothing to worry about.
  1816. @end itemize
  1817.  
  1818. @node Other Networks, Country Codes, Networking with Citadel-86, Networking
  1819. @section Interfacing to Other Networks
  1820. @cindex Networks, other, interfacing to
  1821. @cindex Interfacing to other networks
  1822. @cindex Connecting to other networks
  1823.  
  1824. Using the
  1825. @vindex event
  1826. @code{#event} mechanism, custom networking software and (often)
  1827. lots of system resources, it is theoretically possible to make your
  1828. Fnordadel talk to just about any other network in existence.  Of course,
  1829. most of the custom software has never been written, so it's largely
  1830. theoretical.
  1831.  
  1832. STadel had a program called @code{uucall}, which was for talking to
  1833. Unix machines using the @sc{uucp} protocol, and allowed incoming and outgoing
  1834. mail and News (the Usenet analogue to rooms).  @code{uucall} is not currently
  1835. supported by Fnordadel (and thus, is not included with it); it needs
  1836. some hacking.  If anyone is strongly interested in seeing it running, let
  1837. us know---we occasionally need a bit of encouragement.  Our plans
  1838. are, tentatively, to redo the @sc{uucp} support using a different approach,
  1839. but the @code{uucall} code is there, and with a little effort could be made to
  1840. work---it worked with Fnordadel for a long time, and then broke when we
  1841. changed something or other, and we've just never gone back and fixed it.
  1842.  
  1843. STadel also had a program called @code{bixcall}, which was for talking
  1844. to the Byte Information eXchange (BIX).  We've never seen BIX in our
  1845. lives, so we've no way of testing it at all.  We can send a copy to anyone
  1846. running Fnordadel and you can see if it works; there isn't much we can
  1847. do to support it, though.
  1848.  
  1849. @node Country Codes,  , Other Networks, Networking
  1850. @section Country Codes
  1851. @cindex Country codes
  1852.  
  1853. Country codes are used in your
  1854. @vindex nodeid
  1855. @code{#nodeid} (@pxref{Required parameters};
  1856. they consist of one to three letters which uniquely identify your country.
  1857. The following list is considered standard; it is purloined directly from
  1858. @file{COUNTRY3.MAN}, in the Citadel-86 documentation.
  1859. @example
  1860. Abu Dhabi               AH      Afghanistan             AF
  1861. Ajman (U.A.E.)          JM      Albania                 AB
  1862. Algeria                 DZ      Andorra                 AND
  1863. Angola                  AN      Anguila                 LA 
  1864. Antigua                 AK      Argentina               AR
  1865. Australia               AA      Austria                 A
  1866. Bahamas                 BS      Bahrain                 BN 
  1867. Bangladesh              BJ      Barbados                WB 
  1868. Belgium                 B       Belize                  BH
  1869. Bolivia                 BV      Botswana                BD 
  1870. Brazil                  BR      Brunei                  BU
  1871. Bulgaria                BG      Burma (Union of)        BM
  1872. Burmuda                 BA      Burundi                 UU
  1873. Cameroon Republic       KN      Canada                  CA
  1874. Cayman Islands          CP      Central African Empire  EC
  1875. Central African Rep.    RC      Chad Republic           KD
  1876. Chile                   CF      China (People's Rep)    CN
  1877. Colombia                CO      Congo Republic          KG
  1878. Cook Islands (Rarotonga)RG      Costa Rica              CR
  1879. Cuba                    CU      Cyprus                  CY
  1880. Czechoslovakia          C       Denmark                 DK
  1881. Djibouti, Rep of        FS      Dominica                DO
  1882. Dominican Republic      DR      Dubai (U.A.E.)          DB
  1883. Ecuador                 ED      Egypt, Arab Rep. of     N
  1884. El Salvador             SAL     Ethiopia                ET
  1885. Falkland Islands        FK      Faroe Islands           FA
  1886. Fiji Islands            FJ      Finland                 SF
  1887. France                  F       French Guiana           FG
  1888. French Polynesia        FP      Fujairah (U.A.E.)       FU
  1889. Gabon Republic          GO      Gambia                  GV
  1890. Germany (Dem. Rep)      DD      Germany (Federal Rep)   D
  1891. Ghana                   GH      Gibralter               GK
  1892. Greece                  GR      Greenland               GD
  1893. Grenada                 GA      Guadeloupe (Fr. Ant.)   GL
  1894. Guam                    GM      Guatemala               GU
  1895. Guinea                  GE      Guyana                  GY
  1896. Haiti                   HC      Honduras                HT
  1897. Hong Kong               HX      Hungary                 H
  1898. Iceland                 IS      India                   IN
  1899. Indonesia               IA      Iran                    IR
  1900. Iraq                    IK      Ireland, Rep of         EI 
  1901. Israel                  IL      Italy                   I
  1902. Jamaica                 JA      Japan                   J
  1903. Jordan                  JO      Korea (South)           K
  1904. Korea, Dem People's Rep KZ      Kuwait (Persian Gulf)   KT
  1905. Laos                    LS      Lebanon                 LE
  1906. Lesotho                 BB      Liberia                 LIB
  1907. Libya                   LY      Liechtenstein           FL
  1908. Luxembourg              LU      Macao                   OM
  1909. Madagascar              MG      Malawi                  MI
  1910. Malaysia                MA      Maldives                MF
  1911. Mali                    MJ      Malta                   MT
  1912. Mariana Islands(Saipan) SA      Martinique (Fr. Ant.)   MR
  1913. Mauritania, Islam Rep   MTN     Mauritius               IW
  1914. Mexico                  ME      Monaco                  MC
  1915. Mongolia                MH      Monterrat               MK 
  1916. Morocco                 M       Mozambique              MO 
  1917. Nauru Islands           ZV      Nepal                   NP
  1918. Nethelands Antilles     NA      Netherlands             NL
  1919. New Caledonia           NM      New Hebrides            NH
  1920. New Zealand             NZ      Nicaragua               NK
  1921. Nigeria                 NI      Norway                  N
  1922. Oman (Persian Gulf)     MB      Pakistan                PK
  1923. Panama                  PA      Papua New Guinea        NE
  1924. Paraguay                PY      Peru                    PE 
  1925. Philippines             PH      Poland                  PL
  1926. Portugal/Madeira/Azores P       Qatar (Persian Gulf)    DH
  1927. Ras Al Khaimah (UAE)    RK      Reunion Islands         RE
  1928. Rumania                 R       Rwanda                  RW
  1929. Saint Kitts (WI)        KC      Saint Lucia             LC
  1930. Saint Pierre + Miquelon QN      Saint Vincent           VQ
  1931. San Marino              RSM     Saudi Arabia            SJ
  1932. Senegal                 SG      Seychelles Islands      SZ
  1933. Sharjah (UAE)           SH      Sierra Leone            SL
  1934. Singapore               RS      Solomon Islands         HQ
  1935. Somalia Republic        SM      South Africa            SA
  1936. South West Africa       WK      Spain / Canary Islands  E
  1937. Sri Lanka               CE      St Helena               HI
  1938. Sudan                   SD      Surinam                 SN
  1939. Swaziland               WD      Sweden                  S
  1940. Syrian Arab Republic    SY      Taiwan                  TW
  1941. Tanzania                TA      Thailand                TH
  1942. Togo                    TO      Tonga                   TS
  1943. Transkei                TT      Trinidad and Tobago     WG
  1944. Tunisia                 TN      Turkey                  TR
  1945. Turks + Caicos Islands  TQ      USSR (Russia)           SU 
  1946. Uganda                  UG      Umm Al Qaiwan (UAE)     QA
  1947. United Arab Emirates    EM      United Kingdom / N Ire. G
  1948. United States of Amer.  US      Upper Volta, Rep of     UV 
  1949. Uruguay                 UY      Venezuela               VE
  1950. Viet Nam                VT      Virgin Islands (Brit)   VB
  1951. Western Samoa           SX      Yemen Arab Rep. (San'a) YE
  1952. Yemen, People's Dem Rep AD      Yugoslavia              YU
  1953. Zaire                   ZR      Zimbabwe                RH
  1954. @end example
  1955.  
  1956.